home *** CD-ROM | disk | FTP | other *** search
- #include "bbs.h"
- extern struct myst my_struct;
- void AssignAccess(struct DiskObject *dobj);
- extern int PagesAllowed;
- int newarea[100];
- void ConName(char *s,char *d);
-
- void ConvertAccess(void)
- {
- register int i;
- struct DiskObject *dobj;
- char temp[200];
- char temp3[200];
- PagesAllowed=-1;
- for(i=0;i<100;i++) newacs[i]=0;
- i=0;
- sprintf(temp,"%sACCESS",Cmds->BBSLoc);
- dobj=GetDiskObject(temp);
- if(dobj) AssignAccess(dobj);
- ConName(User.Name,temp3);
- sprintf(temp,"%sACCESS/%s",Cmds->BBSLoc,temp3);
-
- dobj=GetDiskObject(temp);
- if(dobj==NULL)
- {
- sprintf(temp,"%sACCESS/ACS.%d",Cmds->BBSLoc,User.Sec_Status);
- dobj=GetDiskObject(temp); if(dobj) AssignAccess(dobj);
- } else AssignAccess(dobj);
-
- while(i<90)
- {
- if(Cmds->AcLvl[i] && Cmds->AcLvl[i]>0)
- {
- switch(i)
- {
- case 20:
- ADD_BIT(ACS_SENTBY_FILES);
- break;
-
- case 21:
- ADD_BIT(ACS_DEFAULT_CHAT_ON);
- break;
- case 22:
- ADD_BIT(ACS_CLEAR_SCREEN_MSG);
- break;
- case 27:
- ADD_BIT(ACS_KEEP_UPLOAD_CREDIT);
- break;
- case 29:
- ADD_BIT(ACS_DO_CALLERSLOG);
- break;
- case 30:
- ADD_BIT(ACS_DO_UD_LOG);
- break;
-
- case 45:
- ADD_BIT(ACS_SCREEN_TO_FRONT);
- break;
- }
- }
- i++;
- }
-
- ADD_BIT(ACS_JOIN_SUB_CONFERENCE);
- ADD_BIT(ACS_CUSTOMCOMMANDS);
- ADD_BIT(ACS_MSG_EXPERATION);
- ADD_BIT(ACS_MSG_LEVEL);
- if(Sopt->Toggles[14]) ADD_BIT(ACS_WILDCARDS);
- if(User_keys.Userflags & USER_SCRNCLR) ADD_BIT(ACS_CLEAR_SCREEN_MSG);
- ConvertArea();
-
- }
-
- void AssignAccess(struct DiskObject *dobj)
- {
- char **oldtooltypes; char *s;
- int i;
- oldtooltypes=dobj->do_ToolTypes;
- if(s=FindToolType(oldtooltypes,"ACS.OVERIDE_DEFAULTS")) for(i=0;i<90;i++) newacs[i]=0;
-
- if(s=FindToolType(oldtooltypes,"ACS.ACCOUNT_EDITING" ))ADD_BIT(ACS_ACCOUNT_EDITING);
- if(s=FindToolType(oldtooltypes,"ACS.COMMENT_TO_SYSOP" ))ADD_BIT(ACS_COMMENT_TO_SYSOP);
- if(s=FindToolType(oldtooltypes,"ACS.DOWNLOAD" ))ADD_BIT(ACS_DOWNLOAD);
- if(s=FindToolType(oldtooltypes,"ACS.ENTER_MESSAGE" ))ADD_BIT(ACS_ENTER_MESSAGE);
- if(s=FindToolType(oldtooltypes,"ACS.FILE_LISTINGS" ))ADD_BIT(ACS_FILE_LISTINGS);
- if(s=FindToolType(oldtooltypes,"ACS.JOIN_CONFERENCE" ))ADD_BIT(ACS_JOIN_CONFERENCE);
- if(s=FindToolType(oldtooltypes,"ACS.NEW_FILES_SINCE" ))ADD_BIT(ACS_NEW_FILES_SINCE);
- if(s=FindToolType(oldtooltypes,"ACS.PAGE_SYSOP" ))ADD_BIT(ACS_PAGE_SYSOP);
- if(s=FindToolType(oldtooltypes,"ACS.READ_MESSAGE" ))ADD_BIT(ACS_READ_MSG);
- if(s=FindToolType(oldtooltypes,"ACS.DISPLAY_USER_STATS" ))ADD_BIT(ACS_DISPLAY_USER_STATS);
- if(s=FindToolType(oldtooltypes,"ACS.UPLOAD" ))ADD_BIT(ACS_UPLOAD);
- if(s=FindToolType(oldtooltypes,"ACS.VIEW_A_FILE" ))ADD_BIT(ACS_VIEW_A_FILE);
- if(s=FindToolType(oldtooltypes,"ACS.EDIT_USER_INFO" ))ADD_BIT(ACS_EDIT_USER_INFO);
- if(s=FindToolType(oldtooltypes,"ACS.REMOTE_SHELL" ))ADD_BIT(ACS_REMOTE_SHELL);
- if(s=FindToolType(oldtooltypes,"ACS.ZIPPY_TEXT_SEARCH" ))ADD_BIT(ACS_ZIPPY_TEXT_SEARCH);
- if(s=FindToolType(oldtooltypes,"ACS.OVERIDE_CHAT" ))ADD_BIT(ACS_OVERRIDE_CHAT);
- if(s=FindToolType(oldtooltypes,"ACS.EDIT_USER_NAME" ))ADD_BIT(ACS_EDIT_USER_NAME);
- if(s=FindToolType(oldtooltypes,"ACS.EDIT_USER_LOCATION" ))ADD_BIT(ACS_EDIT_USER_LOCATION);
- if(s=FindToolType(oldtooltypes,"ACS.EDIT_PHONE_NUMBER" ))ADD_BIT(ACS_EDIT_PHONE_NUMBER);
- if(s=FindToolType(oldtooltypes,"ACS.EDIT_PASSWORD" ))ADD_BIT(ACS_EDIT_PASSWORD);
- if(s=FindToolType(oldtooltypes,"ACS.SYSOP_READ" ))ADD_BIT(ACS_SYSOP_READ);
- if(s=FindToolType(oldtooltypes,"ACS.EALL_MESSAGES" ))ADD_BIT(ACS_EALL_LEVEL);
- if(s=FindToolType(oldtooltypes,"ACS.DUPE_FILECHECK" ))ADD_BIT(ACS_DUPE_FILECHECK);
- if(s=FindToolType(oldtooltypes,"ACS.READ_BULLETINS" ))ADD_BIT(ACS_BULLETINS);
- if(s=FindToolType(oldtooltypes,"ACS.SYSOP_DOWNLOAD" ))ADD_BIT(ACS_SYSOP_DOWNLOAD);
- if(s=FindToolType(oldtooltypes,"ACS.SYSOP_VIEW" ))ADD_BIT(ACS_SYSOP_VIEW);
- if(s=FindToolType(oldtooltypes,"ACS.SYSOP_READ" ))ADD_BIT(ACS_SYSOP_READ);
- if(s=FindToolType(oldtooltypes,"ACS.FREE_RESUMING" ))ADD_BIT(ACS_ALLOW_FREE_RESUMING);
- if(s=FindToolType(oldtooltypes,"ACS.MESSAGE_EDIT" ))ADD_BIT(ACS_MSG_EDIT);
- if(s=FindToolType(oldtooltypes,"ACS.LIST_NODES" ))ADD_BIT(ACS_NODE_LIST);
- if(s=FindToolType(oldtooltypes,"ACS.DELETE_MESSAGE" ))ADD_BIT(ACS_DELETE_MSG);
- if(s=FindToolType(oldtooltypes,"ACS.ATTACH_FILES" ))ADD_BIT(ACS_ATTACH_FILES);
- if(s=FindToolType(oldtooltypes,"ACS.ZOOM_MAIL" ))ADD_BIT(ACS_ZOOM_MAIL);
- if(s=FindToolType(oldtooltypes,"ACS.EDIT_DIRS" ))ADD_BIT(ACS_EDIT_DIRS);
- if(s=FindToolType(oldtooltypes,"ACS.BREAK_CHAT" ))ADD_BIT(ACS_BREAK_CHAT);
- if(s=FindToolType(oldtooltypes,"ACS.SYSOP_COMMANDS" ))ADD_BIT(ACS_SYSOP_COMMANDS);
- if(s=FindToolType(oldtooltypes,"ACS.WHO_IS_ONLINE" ))ADD_BIT(ACS_WHO_IS_ONLINE);
- if(s=FindToolType(oldtooltypes,"ACS.QUIET_NODE" ))ADD_BIT(ACS_QUIET_NODE);
- if(s=FindToolType(oldtooltypes,"ACS.EDIT_FILES" ))ADD_BIT(ACS_EDIT_ANY);
- if(s=FindToolType(oldtooltypes,"ACS.OVERRIDE_TIMES" ))ADD_BIT(ACS_OVERRIDE_TIMES);
- if(s=FindToolType(oldtooltypes,"ACS.RELOGON" ))ADD_BIT(ACS_RELOGON);
- if(s=FindToolType(oldtooltypes,"ACS.ULSTATS" ))ADD_BIT(ACS_ULSTATS);
- if(s=FindToolType(oldtooltypes,"ACS.XPR_RECEIVE" ))ADD_BIT(ACS_XPR_RECEIVE);
- if(s=FindToolType(oldtooltypes,"ACS.XPR_SEND" ))ADD_BIT(ACS_XPR_SEND);
- if(s=FindToolType(oldtooltypes,"ACS.CONFERENCE_ACCOUNTING")) ADD_BIT(ACS_CONFERENCE_ACCOUNTING);
- if(s=FindToolType(oldtooltypes,"ACS.SYSOP_COMMANDS" ))ADD_BIT(ACS_SYSOP_COMMANDS);
- if(s=FindToolType(oldtooltypes,"ACS.PRI_MSGFILES" ))ADD_BIT(ACS_PRI_MSGFILES);
- if(s=FindToolType(oldtooltypes,"ACS.PUB_MSGFILES" ))ADD_BIT(ACS_PUB_MSGFILES);
- if(s=FindToolType(oldtooltypes,"ACS.MAX_PAGES")) PagesAllowed=atoi(s);
- if(s=FindToolType(oldtooltypes,"ACS.FULL_EDIT")) ADD_BIT(ACS_FULLEDIT);
- FreeDiskObject(dobj);
- }
- void ConvertArea(void)
- {
- register int i;
- struct DiskObject *dobj;
- char **oldtooltypes;
- char temp[100];
- i=0;
- for(i=0;i<100;i++) newarea[i]=0;
- sprintf(temp,"%sACCESS/AREA.%s",Cmds->BBSLoc,User.Conference_Access);
- if(dobj=GetDiskObject(temp))
- {
- oldtooltypes=dobj->do_ToolTypes;
- for(i=0;i<999;i++)
- {
- sprintf(temp,"CONF.%d",i+1);
- if(FindToolType(oldtooltypes,temp))
- { AddAreaBit(i); }
- }
- FreeDiskObject(dobj);
- return;
- }
- for(i=0;i<999;i++) RemAreaBit(i);
- AddAreaBit(0);
- }
-
- void ADD_BIT(int bitnum)
- {
- if(!(bitnum%16))
- {
- newacs[bitnum/16] |= 1;
- return;
- }
- newacs[bitnum/16] |= (1<<(bitnum%16));
- }
- void REM_BIT(int bitnum)
- {
- if(!(bitnum%16))
- {
- newacs[bitnum/16] ^= 1;
- return;
- }
- newacs[bitnum/16] ^= (1<<(bitnum%16));
- }
- BOOL GET_BIT(int bitnum)
- {
- if(!(bitnum%16))
- {
- if((newacs[bitnum/16] & 1)) return(1);else return(0);
- }
- if((newacs[bitnum/16] & (1<<(bitnum%16)))) return(1); else return(0);
- }
-
- void AddAreaBit(int bitnum)
- {
- if(!(bitnum%16))
- {
- newarea[bitnum/16] |= 1;
- return;
- }
- newarea[bitnum/16] |= (1<<(bitnum%16));
- }
- void RemAreaBit(int bitnum)
- {
- if(!(bitnum%16))
- {
- newarea[bitnum/16] ^= 1;
- return;
- }
- newarea[bitnum/16] ^= (1<<(bitnum%16));
- }
- BOOL GetAreaBit(int bitnum)
- {
- if(!(bitnum%16))
- {
- if((newarea[bitnum/16] & 1)) return(1);else return(0);
- }
- if((newarea[bitnum/16] & (1<<(bitnum%16)))) return(1); else return(0);
- }
-
- void ConName(char *s,char *d)
- {
- register int i=0;
- strcpy(d,s);
- while(*(s+i)!='\0')
- {
- if(*(s+i)=='%') *(d+i)='_';
- if(*(s+i)=='#') *(d+i)='_';
- if(*(s+i)=='?') *(d+i)='_';
- if(*(s+i)=='/') *(d+i)='_';
- if(*(s+i)=='(') *(d+i)='_';
- if(*(s+i)==')') *(d+i)='_';
- i++;
- }
- }
-